Real-time Location Updates

Mobile App Development - অ্যান্ড্রয়েড ডেভেলপমেন্ট (Android) - Location Services এবং Google Maps Integration
330

Android অ্যাপ্লিকেশনগুলিতে Real-time Location Updates ব্যবহারকারীর অবস্থান পরিবর্তন হলে তা নির্ধারণ করতে এবং সেই অনুযায়ী অ্যাপ্লিকেশনের UI বা মানচিত্র আপডেট করতে অত্যন্ত গুরুত্বপূর্ণ। Fused Location Provider API ব্যবহার করে Android অ্যাপে উচ্চ নির্ভুলতা এবং পাওয়ার-ইফিশিয়েন্ট পদ্ধতিতে রিয়েল-টাইম লোকেশন আপডেট পাওয়া যায়।

Real-time Location Updates

নিচে Real-time Location Updates সেটআপ করার ধাপগুলো এবং উদাহরণ আলোচনা করা হলো:


১. সেটআপ এবং পারমিশন

ধাপ ১: Gradle ফাইলে ডিপেনডেন্সি যোগ করা

implementation 'com.google.android.gms:play-services-location:21.0.1'

ধাপ ২: AndroidManifest.xml এ পারমিশন যোগ করা

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

ACCESS_BACKGROUND_LOCATION পারমিশন শুধুমাত্র তখন প্রয়োজন হবে যদি আপনি অ্যাপ ব্যাকগ্রাউন্ডে থাকাকালীনও লোকেশন আপডেট করতে চান।

ধাপ ৩: Runtime Permission চাওয়া (Android 6.0+)

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE);
}

২. FusedLocationProviderClient ব্যবহার করে লোকেশন আপডেট পাওয়া

FusedLocationProviderClient ব্যবহার করে বর্তমান অবস্থান এবং লোকেশন আপডেট সহজেই পাওয়া যায়।

ধাপ ১: FusedLocationProviderClient ইনিশিয়ালাইজ করা

FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

ধাপ ২: LocationRequest তৈরি করা

LocationRequest locationRequest = LocationRequest.create();
locationRequest.setInterval(10000); // 10 সেকেন্ড অন্তর লোকেশন আপডেট চাওয়া
locationRequest.setFastestInterval(5000); // দ্রুততম লোকেশন আপডেট ইন্টারভাল
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
  • setInterval(): আপডেটের ইন্টারভাল (মিলিসেকেন্ডে) সেট করে।
  • setFastestInterval(): দ্রুততম সময়ের মধ্যে আপডেট পাওয়া সম্ভব হলে সেটি গ্রহণ করে।
  • setPriority(): লোকেশন আপডেটের নির্ভুলতা (PRIORITY_HIGH_ACCURACY, PRIORITY_BALANCED_POWER_ACCURACY ইত্যাদি) সেট করে।

ধাপ ৩: LocationCallback তৈরি করা

LocationCallback locationCallback = new LocationCallback() {
    @Override
    public void onLocationResult(LocationResult locationResult) {
        if (locationResult == null) {
            return;
        }
        for (Location location : locationResult.getLocations()) {
            double latitude = location.getLatitude();
            double longitude = location.getLongitude();
            // লোকেশনের উপর ভিত্তি করে UI আপডেট করুন
        }
    }
};

ধাপ ৪: লোকেশন আপডেট শুরু করা

fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper());

এখানে requestLocationUpdates() মেথড ব্যবহার করে LocationRequest এবং LocationCallback পাস করা হয়েছে, যা নির্দিষ্ট ইন্টারভালে লোকেশন আপডেট পাবে।


৩. লোকেশন আপডেট বন্ধ করা

লোকেশন আপডেট শুরু করার পর আপনি যখন চান এটি বন্ধ করতে পারবেন। এটি পাওয়ার সংরক্ষণের জন্য গুরুত্বপূর্ণ যখন আপনার অ্যাপ্লিকেশন লোকেশন আপডেটের প্রয়োজন নেই।

fusedLocationClient.removeLocationUpdates(locationCallback);

৪. ব্যাকগ্রাউন্ডে লোকেশন আপডেট পাওয়া (Android 10 এবং তার উপরে)

ব্যাকগ্রাউন্ডে লোকেশন আপডেট পাওয়ার জন্য কিছু অতিরিক্ত কনফিগারেশন প্রয়োজন। Android 10 এবং তার উপরে ACCESS_BACKGROUND_LOCATION পারমিশন প্রয়োজন, এবং আপনাকে অবশ্যই ব্যবহারকারীর কাছ থেকে এক্সপ্লিসিট পারমিশন চাইতে হবে।

ধাপ ১: ACCESS_BACKGROUND_LOCATION পারমিশন যোগ করা

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION}, BACKGROUND_LOCATION_PERMISSION_REQUEST_CODE);
}

ধাপ ২: Foreground Service ব্যবহার করে লোকেশন আপডেট চালানো

ব্যাকগ্রাউন্ডে লোকেশন আপডেট চালানোর জন্য, একটি Foreground Service তৈরি করা দরকার, যা ব্যবহারকারীকে নোটিফিকেশন দেখিয়ে এটি সক্রিয় রাখে।

public class LocationService extends Service {

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        startForeground(1, createNotification());
        // FusedLocationProviderClient ব্যবহার করে লোকেশন আপডেট শুরু করুন
        return START_NOT_STICKY;
    }

    private Notification createNotification() {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "location_channel")
                .setContentTitle("Location Service")
                .setContentText("Tracking your location")
                .setSmallIcon(R.drawable.ic_location);
        
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel("location_channel", "Location Channel", NotificationManager.IMPORTANCE_DEFAULT);
            NotificationManager manager = getSystemService(NotificationManager.class);
            manager.createNotificationChannel(channel);
        }

        return builder.build();
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

LocationService ব্যবহার করে, আপনি ব্যাকগ্রাউন্ডে লোকেশন আপডেট পেতে পারবেন। তবে Android 11 এবং তার উপরে, আপনার অ্যাপটি Google Play নীতিমালার অধীনে থাকবে এবং আপনাকে প্রমাণ করতে হবে কেন আপনার ব্যাকগ্রাউন্ড লোকেশন প্রয়োজন।


৫. Google Maps এ রিয়েল-টাইম লোকেশন দেখানো

Google Maps ব্যবহার করে রিয়েল-টাইম লোকেশন প্রদর্শন করা যায়। লোকেশন আপডেটের সাথে ম্যাপের অবস্থান আপডেট করে ব্যবহারকারীর চলমান অবস্থান মানচিত্রে দেখা যায়।

@Override
public void onLocationResult(LocationResult locationResult) {
    if (locationResult == null) {
        return;
    }
    for (Location location : locationResult.getLocations()) {
        LatLng updatedLocation = new LatLng(location.getLatitude(), location.getLongitude());
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(updatedLocation, 15));
        mMap.addMarker(new MarkerOptions().position(updatedLocation).title("Current Location"));
    }
}

এখানে, লোকেশন আপডেটের মাধ্যমে ম্যাপের ক্যামেরা এবং মার্কার আপডেট করা হয়েছে।


উপসংহার

Real-time Location Updates Android অ্যাপে একটি গুরুত্বপূর্ণ ফিচার, যা ব্যবহারকারীর অবস্থান ট্র্যাক করতে এবং তার উপর ভিত্তি করে বিভিন্ন অ্যাকশন নিতে সাহায্য করে। Fused Location Provider API ব্যবহার করে আপনি নির্ভুল এবং পাওয়ার-ইফিশিয়েন্ট উপায়ে ব্যবহারকারীর লোকেশন আপডেট করতে পারবেন। ব্যাকগ্রাউন্ড আপডেটের জন্য, Android এর নীতিমালা এবং পারমিশন সঠিকভাবে পরিচালনা করতে হবে। Google Maps এর সাথে ইন্টিগ্রেশন করে আপনি একটি কার্যকরী এবং ইন্টারেক্টিভ লোকেশন-বেসড অ্যাপ্লিকেশন তৈরি করতে সক্ষম হবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...